package java学习.算法.didi;

import java.util.*;

/**
 查找和替换
 时间限制： 3000MS
 内存限制： 589824KB
 题目描述：
 Bob有一个文本文件。因为新系统上的文本编辑器太难用了，Bob在其中进行查找和替换时只能纯人工操作。为了早点下班，Bob决定找你开发一个查找和替换软件来降低他的工作量。现在他拿来了一些测试样例，你需要尽快写出一个能够通过这些样例的程序来交差。



 输入描述
 输入的第一行是一个由小写英文字母组成的字符串s。

 第二行有一个正整数n(1<=n<=100)，代表替换操作的次数。

 接下来n行每行有两个以空格隔开的由小写英文字母组成的字符串t1和t2，代表你的程序需要将S中每个t1从前到后逐个替换成t2。如s=abababa，t1=aba，t2=cc，则逐个替换的结果为abababa->ccbaba->ccbcc。s中第二个aba在第一次替换中被破坏，因此只有第一个和第三个aba才会被替换成cc。

 输入保证s的长度在任意一次替换前后均不会超过2000，且t1与t2的长度之和不超过100。

 输出描述
 输出s在n次替换操作后的结果。


 样例输入
 abcabc
 2
 bca cba
 bab aca
 样例输出
 acacac

 提示
 如样例：abcabc->acbabc->acacac。
 */

public class findAndReplace {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.next();
        int num = sc.nextInt();
        String s  = "" ,s1 = "";
        Map<String, String> map = new HashMap<>();
        for (int i = 0; i < num; i++) {
            s = sc.next();
            s1 = sc.next();
            map.put(s,s1);
        }
//        System.out.println(str);
//        System.out.println(num);
//        System.out.println(map);

        System.out.println(func(str,num,map));
        Scanner scanner = new Scanner(System.in);
        String in = scanner.next();
        int n = scanner.nextInt();
        for (int i = 0 ; i  < n;i++){
            String a = scanner.next();
            String b = scanner.next();
            in = in.replaceAll(a,b);
        }
        System.out.println(in);
    }


    public static String func(String s , int num , Map<String, String> map){
        Set<String> set = map.keySet();
        Object[] array = set.toArray();
        for (Object o : array) {
            if (s.contains((String)o)){
                String o1 = map.get(o);
                s = s.replace((String) o, o1);
            }
        }
        return s;
    }
}
//        String s2 = str.replace("bca", "cba");
//        System.out.println(s2);